ChatGPTを使ってGodot Engineのブロック崩しゲームを作る
以下、自分がkidooom.icon、ChatGPTがChatGPT.icon kidooom.iconGodot Engine でブロック崩しを作って
ChatGPT.iconおめでとうございます!Godot Engineを使ってブロック崩しゲームを作ることは非常に楽しいプロジェクトです。Godot Engineは、無料で使えるオープンソースのゲームエンジンです。そのため、様々なゲームジャンルを作ることができます。(中略)ぜひ、自分なりのゲームを作ってみてください。
(kidooom.iconうまいことかわされて、作ってもらえなかった。ぜひ自分で作ってみてくださいと言われた)
kidooom.iconブロック崩しの処理をGDScriptで書いて
ChatGPT.icon例えば、GDScriptを使用して、ブロック崩しゲーム内でのボールの動作を定義することができます。以下に、その例を示します。
code:gd
func ball_movement():
# ボールの移動量を定義
var movement_x = 5
var movement_y = 5
# ボールが画面内にあるか判定
if self.position.x < 0 or self.position.x > screen_width:
movement_x = -movement_x
if self.position.y < 0 or self.position.y > screen_height:
movement_y = -movement_y
# ボールを移動
self.position.x += movement_x
self.position.y += movement_y
このスクリプトを、ボールスプライトに適用することで、ボールが画面内にある間、常に移動し続けるようになります。このスクリプトを拡張し、ボールがバーやブロックとの当たり判定などを定義することで、ブロック崩しゲームとしての動作を実現することができます。GDScriptを使用することで、Godot Engineでは様々なゲームを作ることができます。ぜひ、GDScriptを使って、自分なりのゲームを作ってみてください。
(kidooom.icon「GDScript で書いて」と具体的にお願いしたら、まずはボールのスクリプトだけ書いてくれた。最後はまた突き放された)
(kidooom.iconとりあえずGodot Engine 上でボールスプライトを用意し、Scriptを適用してみる)
https://gyazo.com/0ef402c11e9e91cd663c8df3782b852e
screen_width と screen_height が未定義だよとエラーが出るので、ChatGPTに問い合わせる
kidooom.icon screen_width と screen_height が未定義ってエラーが出たよ
ChatGPT.iconscreen_width と screen_height は、画面の幅と高さを表す変数です。これらの変数は、事前に定義する必要があります。例えば、以下のように、定義して使用することができます。
code:gd
# 画面の幅と高さを定義
var screen_width = 640
var screen_height = 480
(kidooom.iconうーん、これだと実際の画面の大きさとScriptの定義でズレが出てしまうことがあるので良くない)
kidooom.icon画面の幅と高さは、プロジェクト設定から取得できるんじゃない?
ChatGPT.icon画面の幅と高さは、プロジェクト設定から取得することができます。Godot Engineでは、ゲーム画面のサイズや背景色などを設定することができます。これらの設定は、プロジェクト設定と呼ばれるものを使用して行います。
例えば、以下のように、プロジェクト設定から画面の幅と高さを取得することができます。
code:gd
# プロジェクト設定から画面の幅と高さを取得
var screen_width = ProjectSettings.get_setting("display/width")
var screen_height = ProjectSettings.get_setting("display/height")
(kidooom.iconこの通りに取得してみる)
(kidooom.icon 分かっていたが、この方法では取得できずにエラーになった)
kidooom.icon先程のscreen_widthとscreen_heightの取得は null になったよ
ChatGPT.icon先程の screen_width と screen_height の取得方法は、正しい方法です。ただし、プロジェクト設定から値を取得する場合、設定値が存在するかどうかを確認する必要があります。
(kidooom.iconうーん、Godot4 での取得方法は知らないっぽい。Godot 4で書いてと言っても有効な返答は得られなかったので、自分で書く)
以下のように書き換えたら、プロジェクト設定の幅と高さを取得できるようになった
code:gd
# プロジェクト設定から画面の幅と高さを取得
var screen_width = ProjectSettings.get_setting("display/window/size/viewport_width")
var screen_height = ProjectSettings.get_setting("display/window/size/viewport_height")
そしてボールのスクリプトが動くようになったが、最初にChatGPTに教えてもらったスクリプトでは一瞬でボールが画面右下に移動して終わる
https://gyazo.com/a1ea83537e087ac3e282d0d9f7eb1a2e
この先を実装しようと思っているのだが、ChatGPTが Too many requiresエラー でアクセスできずに挫折中...
ChatGPT.icon
ChatGPT.icon
ChatGPT.icon
ChatGPT.icon
ChatGPT.icon